package cn.fantasy.algorithm;

/**
 * 二维数组中的查找
 * 在一个 n*m 的二维数组中，每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序，请完成一个函数，输入这样的一个二维数组和一个
 * 整数，判断数组中是否含有该整数。
 * 示例：
 * 现有矩阵matrix如下
 * [
 * [1, 4, 7, 11, 15],
 * [2, 5, 8, 12, 19],
 * [3, 6, 9, 16, 22],
 * [10, 13, 14, 17, 24],
 * [18, 21, 23, 26, 30],
 * ]
 * 给定target = 5， 返回true
 * 给定target = 20， 返回false
 * <p>
 * 0<=n<=1000
 * 0<=n<=1000
 */
public class FindNumberIn2DArray {
    public static void main(String[] args) {

    }

    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false;
        int m = matrix.length;
        int n = matrix[0].length;

        int row = 0;
        int col = n - 1;

        while (row < m && col >= 0) {
            if (target == matrix[row][col]) return true;
            else if (target > matrix[row][col]) row++;
            else col--;
        }
        return false;
    }

}
